// const url = "https://example.com/page?name=John&age=30";
// const urlStr = new URLSearchParams(new URL(url).search)
// console.log('SS', urlStr.get('name'));

// const url = "https://example.com/page?name=John&age=30";
// const queryString = url.split('?')[1]; // 提取查询字符串部分
// const paramsObject = {};
// if (queryString) {
//   const paramsArray = queryString.split('&'); // 分割成键值对数组
//   paramsArray.forEach(item => {
//     const [key, value] = item.split('='); // 分割键和值
//     paramsObject[key] = value; // 存储到对象中
//   });
// }

// console.log(paramsObject);
// -----------------------------------------------------------
// class RequestPool {
//   constructor(limit) {
//     this.limit = limit; // 设置并发请求的最大数量限制
//     this.queue = []; // 初始化一个空数组用于存储等待中的请求
//     this.activeRequests = 0; // 初始化当前活跃的请求数量为0
//   }

//   send (cb) { // 定义发送请求的方法，接收一个回调函数作为参数
//     if (this.activeRequests < this.limit) { // 如果当前活跃请求数小于最大限制
//       this.activeRequests++; // 增加活跃请求数量
//       cb().finally(() => { // 执行传入的回调函数，并在完成后执行finally块中的逻辑
//         this.activeRequests--; // 减少活跃请求数量
//         this.processQueue(); // 尝试处理队列中的下一个请求
//       });
//     } else {
//       this.queue.push(cb); // 如果活跃请求数已达上限，则将回调函数加入等待队列
//     }
//   }

//   processQueue () { // 定义处理等待队列的方法
//     while (this.queue.length > 0 && this.activeRequests < this.limit) { // 当队列中有等待的请求且活跃请求数未达上限时循环
//       const cb = this.queue.shift(); // 从队列中取出第一个等待的请求
//       this.activeRequests++; // 增加活跃请求数量
//       cb().finally(() => { // 执行该回调函数，并在完成后执行finally块中的逻辑
//         this.activeRequests--; // 减少活跃请求数量
//         this.processQueue(); // 尝试处理队列中的下一个请求
//       });
//     }
//   }
// }

// const instance = new RequestPool(2); // 创建RequestPool实例，设置最大并发数为2

// function asyncOperation (delay) { // 定义一个模拟异步操作的函数，接受延迟时间作为参数
//   return new Promise(resolve => setTimeout(() => { // 返回一个新的Promise对象，内部使用setTimeout模拟异步操作
//     console.log("1"); // 在延迟时间后输出"1"
//     resolve(); // 完成Promise
//   }, delay));
// }

// // 定义异步操作函数
// const fn = () => asyncOperation(1000); // 定义fn函数，调用asyncOperation函数并传入1秒的延迟时间

// // 发送请求
// instance.send(fn); // 调用send方法发送第一个请求
// instance.send(fn); // 调用send方法发送第二个请求

// // 在1秒后发送另一个请求
// setTimeout(() => instance.send(fn), 1000); // 使用setTimeout在1秒后发送第三个请求

// ---------------------------------

// function concurRequest (urls, maxNum) {
//   return new Promise((resolve) => {
//     if (urls.length === 0) {
//       resolve([])
//     }
//     let index = 0;
//     let result = []
//     let count = 0
//     // 发送请求
//     async function request () {
//       if (index === urls.length) {
//         return
//       }
//       const url = urls[index]
//       let i = index
//       index++
//       try {
//         const res = await fetch(url)
//         console.log(url);

//         result[i] = res
//       } catch (error) {
//         result[i] = error
//       }
//       finally {
//         // 全部都是已经发送成功的话
//         count++
//         if (count === urls.length) {
//           console.log('请求完成！');
//           resolve(result)
//         }
//         request()
//       }
//     }
//     request()
//     request()
//     request()
//   })
// }

